Speed up noop registry updates with GitHub
authorAlex Crichton <alex@alexcrichton.com>
Tue, 12 Jul 2016 16:36:33 +0000 (09:36 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Mon, 8 Aug 2016 18:02:52 +0000 (11:02 -0700)
commita9d108a8790b7219eb36cbad479a98e500b55b4e
tree45ce66e9accb533929509af97b404a31b9c6884e
parentc917e94b419ce62760c0a6fdcf90ff0d7d1d5cdb
Speed up noop registry updates with GitHub

This commit adds supports to registry index updates to use GitHub's HTTP API [1]
which is purportedly [2] much faster than doing a git clone, and emprically that
appears to be the case.

This logic kicks in by looking at the URL of a registry's index, and if it looks
exactly like `github.com/$user/$repo` then we'll attempt to use GitHub's API,
otherwise we always fall back to a git update.

This behavior may *slow down* registry updates which actually need to download
information as an extra HTTP request is performed to figure out that we need to
perform a git fetch, but hopefully that won't actually be the case much of the
time!

[1]: https://developer.github.com/v3/repos/commits/#get-the-sha-1-of-a-commit-reference
[2]: https://developer.github.com/changes/2016-02-24-commit-reference-sha-api/
src/cargo/sources/registry/remote.rs